library(ggplot2)
library(knitr)
9 Pakiet ggplot2. Podstawy konstrukcji wykresów
Grzegorz Kończak
9.1 📘 Załadowanie pakietu gplot2 i charakterystyka zbioru mtcars
9.1.1 ❕ Załadowanie pakietu ggplot2
9.1.2 ️✔️️ Dla konstrukcji wykresów w tej części wykorzystano dostępny w R zbiór mtcars
.
9.1.3 Wyświetlenie początkowych rekordów zbioru mtcars
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
9.1.4 Podstawowa charakterystyka zmiennych
summary(mtcars)
mpg cyl disp hp
Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
Median :19.20 Median :6.000 Median :196.3 Median :123.0
Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
drat wt qsec vs
Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
Median :3.695 Median :3.325 Median :17.71 Median :0.0000
Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
am gear carb
Min. :0.0000 Min. :3.000 Min. :1.000
1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
Median :0.0000 Median :4.000 Median :2.000
Mean :0.4062 Mean :3.688 Mean :2.812
3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
Max. :1.0000 Max. :5.000 Max. :8.000
9.1.5 Zmiana typu trzech zmiennych na czynniki (factors)
$gear <- factor(mtcars$gear)
mtcars$am <- factor(mtcars$am)
mtcars$cyl <- factor(mtcars$cyl) mtcars
9.1.6 Dane
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
9.1.7 Wykresy
par(mar = c(4, 4, .5, .1))
plot(mpg ~ hp, data = mtcars, pch = 19)
9.1.8 Podsumowanie
summary(mtcars)
mpg cyl disp hp drat
Min. :10.40 4:11 Min. : 71.1 Min. : 52.0 Min. :2.760
1st Qu.:15.43 6: 7 1st Qu.:120.8 1st Qu.: 96.5 1st Qu.:3.080
Median :19.20 8:14 Median :196.3 Median :123.0 Median :3.695
Mean :20.09 Mean :230.7 Mean :146.7 Mean :3.597
3rd Qu.:22.80 3rd Qu.:326.0 3rd Qu.:180.0 3rd Qu.:3.920
Max. :33.90 Max. :472.0 Max. :335.0 Max. :4.930
wt qsec vs am gear carb
Min. :1.513 Min. :14.50 Min. :0.0000 0:19 3:15 Min. :1.000
1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000 1:13 4:12 1st Qu.:2.000
Median :3.325 Median :17.71 Median :0.0000 5: 5 Median :2.000
Mean :3.217 Mean :17.85 Mean :0.4375 Mean :2.812
3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000 3rd Qu.:4.000
Max. :5.424 Max. :22.90 Max. :1.0000 Max. :8.000
9.1.9 Wyświetlenie początkowych rekordów zbioru danych po dokonanej zmianie
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
9.1.10 Podstawowa charakterystyka zmiennych po dokonanej zmianie
summary(mtcars)
mpg cyl disp hp drat
Min. :10.40 4:11 Min. : 71.1 Min. : 52.0 Min. :2.760
1st Qu.:15.43 6: 7 1st Qu.:120.8 1st Qu.: 96.5 1st Qu.:3.080
Median :19.20 8:14 Median :196.3 Median :123.0 Median :3.695
Mean :20.09 Mean :230.7 Mean :146.7 Mean :3.597
3rd Qu.:22.80 3rd Qu.:326.0 3rd Qu.:180.0 3rd Qu.:3.920
Max. :33.90 Max. :472.0 Max. :335.0 Max. :4.930
wt qsec vs am gear carb
Min. :1.513 Min. :14.50 Min. :0.0000 0:19 3:15 Min. :1.000
1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000 1:13 4:12 1st Qu.:2.000
Median :3.325 Median :17.71 Median :0.0000 5: 5 Median :2.000
Mean :3.217 Mean :17.85 Mean :0.4375 Mean :2.812
3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000 3rd Qu.:4.000
Max. :5.424 Max. :22.90 Max. :1.0000 Max. :8.000
9.2 📘 Wykres rozrzutu
9.2.1 Argumenty: nazwa zbioru danych i zmienne na osie (lub jedną oś)
ggplot(data=mtcars,aes(x=wt,y=mpg))+geom_point()
9.2.2 Taki sam rezultat bez ‘data=’, ‘x=’ i ‘y=’
ggplot(mtcars,aes(wt,mpg))+geom_point()
9.2.3 Wyróżnienie grup (liczba cylindrów)
ggplot(mtcars,aes(wt,mpg,color=cyl))+geom_point()
9.2.4 Dodanie etykiet opisu osi
ggplot(mtcars,aes(wt,mpg,color=cyl))+geom_point()+labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa')
9.2.5 Zmiana etykiety legendy
ggplot(mtcars,aes(wt,mpg,color=cyl))+geom_point()+labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów')
9.2.6 Wygodny zapis - to samo co powyżej
ggplot(mtcars,aes(wt,mpg,color=cyl))+
geom_point()+
labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów')
9.2.7 Umieszczenie legendy pod wykresem
ggplot(mtcars,aes(wt,mpg,color=cyl))+
geom_point()+
labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów')+
theme(legend.position='bottom')
9.2.8 Kształt może oznaczać liczbę biegów
ggplot(mtcars,aes(wt,mpg,color=cyl,shape=gear))+
geom_point()+
labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów',shape='Liczba biegów')+
theme(legend.position='bottom')
9.2.9 Wielkość punktów to np. masa samochodu
ggplot(mtcars,aes(wt,mpg,color=cyl,shape=gear,size=wt))+
geom_point()+
labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów',shape='Liczba biegów',size='Waga')+
theme(legend.position='bottom')
9.2.10 Powrót do podstawowego wykresu rozrzutu
ggplot(mtcars,aes(wt,mpg))+
geom_point()
9.3 📘 Histogram
9.3.1 Histogram jest wykreślany dla jednej zmiennej ilościowej, zmieniamy tylko ostatnią linię
ggplot(mtcars,aes(mpg))+
geom_histogram()
9.3.2 Można dodać kolory (color- obramowanie, fill- wypełnienie)
ggplot(mtcars,aes(mpg))+
geom_histogram(binwidth=2,fill='yellow',color='blue')
9.3.3 Jednak ciekawsze jest fill ze zmienną
ggplot(mtcars,aes(mpg,fill=cyl))+
geom_histogram(binwidth=.8,)
9.4 📘 Wykresy słupkowe
9.4.1 Konstrukcja wykresu słupkowego
ggplot(mtcars,aes(cyl))+
geom_bar()
9.4.2 Wykres słupkowy - poziomy
ggplot(mtcars,aes(cyl))+
geom_bar()+
coord_flip()
9.4.3 Wykres Słupkowy (!) - współrzędne biegunowe
ggplot(mtcars,aes(cyl))+
geom_bar()+
coord_polar()
9.5 📘 Wykres pudełkowy
9.5.1 Wyróżnienie kilku kategorii w boxplot
ggplot(mtcars,aes(cyl,mpg))+
geom_boxplot()
9.5.2 Można dodać obserwacje
ggplot(mtcars,aes(cyl,mpg))+
geom_boxplot()+
geom_point()
9.5.3 Można dodać “rozrzucone” obserwacje
ggplot(mtcars,aes(cyl,mpg))+
geom_boxplot()+
geom_jitter()
9.6 📘 Wykres Wiolinowy
9.6.1 Wykres Wiolinowy - podstawowa konstrukcja
ggplot(mtcars,aes(factor(cyl),mpg))+
geom_violin()
9.6.2 Wykres Wiolinowy + jitter
ggplot(mtcars,aes(factor(cyl),mpg))+
geom_violin()+
geom_jitter()
9.7 📘 Etykiety
9.7.1 Dodanie etykiet obserwacji
ggplot(mtcars,aes(wt,mpg,label=row.names(mtcars)))+
geom_text()
9.7.2 Można dodać jednocześnie etykiety obserwacji i punkty
ggplot(mtcars,aes(wt,mpg,label=row.names(mtcars)))+
geom_text()+
geom_point()
9.8 📘 Regresja
9.8.1 Funkcja regresji
ggplot(mtcars,aes(wt,mpg))+
geom_smooth()
9.8.2 Dodanie punktów na wykresie
ggplot(mtcars,aes(wt,mpg))+
geom_smooth()+
geom_point()
9.8.3 Określenie postaci funkcji regresji
ggplot(mtcars,aes(wt,mpg))+
geom_smooth(method='lm')+
geom_point()
9.8.4 Rozbicie na grupy ze względu na liczbę cylindrów
ggplot(mtcars,aes(wt,mpg,color=cyl))+
geom_smooth(method='lm')+
geom_point()
9.8.5 Regresja - funkcja kwadratowa
ggplot(mtcars,aes(wt,mpg))+
geom_smooth(method='lm',formula=y~poly(x,2))+
geom_point()